From 27ec4c403fa6300ac7ee4f95dcfb90291dc80d42 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Mon, 7 Nov 2005 16:35:46 +0100 Subject: [PATCH] This patch change the vmx mmio handler to static. Signed-off-by: Yunhong Jiang Signed-off-by: Xin Li --- xen/arch/x86/vmx_intercept.c | 18 +++++++++--------- xen/arch/x86/vmx_vlapic.c | 17 +++++++++++------ xen/include/asm-x86/vmx_intercept.h | 12 ++++-------- xen/include/asm-x86/vmx_vlapic.h | 8 -------- 4 files changed, 24 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/vmx_intercept.c b/xen/arch/x86/vmx_intercept.c index d452f7b792..3dc4c018a2 100644 --- a/xen/arch/x86/vmx_intercept.c +++ b/xen/arch/x86/vmx_intercept.c @@ -33,13 +33,13 @@ #ifdef CONFIG_VMX -struct vmx_mmio_handler vmx_mmio_handers[VMX_MMIO_HANDLER_NR] = +extern struct vmx_mmio_handler vlapic_mmio_handler; + +#define VMX_MMIO_HANDLER_NR 1 + +struct vmx_mmio_handler *vmx_mmio_handlers[VMX_MMIO_HANDLER_NR] = { - { - .check_handler = vlapic_range, - .read_handler = vlapic_read, - .write_handler = vlapic_write - } + &vlapic_mmio_handler }; static inline void vmx_mmio_access(struct vcpu *v, @@ -134,16 +134,16 @@ int vmx_mmio_intercept(ioreq_t *p) { struct vcpu *v = current; int i; - struct vmx_mmio_handler *handler = vmx_mmio_handers; /* XXX currently only APIC use intercept */ if ( !vmx_apic_support(v->domain) ) return 0; for ( i = 0; i < VMX_MMIO_HANDLER_NR; i++ ) { - if ( handler[i].check_handler(v, p->addr) ) { + if ( vmx_mmio_handlers[i]->check_handler(v, p->addr) ) { vmx_mmio_access(v, p, - handler[i].read_handler, handler[i].write_handler); + vmx_mmio_handlers[i]->read_handler, + vmx_mmio_handlers[i]->write_handler); return 1; } } diff --git a/xen/arch/x86/vmx_vlapic.c b/xen/arch/x86/vmx_vlapic.c index 4d45fcd3e6..27fbe8580b 100644 --- a/xen/arch/x86/vmx_vlapic.c +++ b/xen/arch/x86/vmx_vlapic.c @@ -543,8 +543,8 @@ void vlapic_read_aligned(struct vlapic *vlapic, unsigned int offset, } } -unsigned long vlapic_read(struct vcpu *v, unsigned long address, - unsigned long len) +static unsigned long vlapic_read(struct vcpu *v, unsigned long address, + unsigned long len) { unsigned int alignment; unsigned int tmp; @@ -585,8 +585,8 @@ unsigned long vlapic_read(struct vcpu *v, unsigned long address, return result; } -unsigned long vlapic_write(struct vcpu *v, unsigned long address, - unsigned long len, unsigned long val) +static void vlapic_write(struct vcpu *v, unsigned long address, + unsigned long len, unsigned long val) { struct vlapic *vlapic = VLAPIC(v); unsigned int offset = address - vlapic->base_address; @@ -758,10 +758,9 @@ unsigned long vlapic_write(struct vcpu *v, unsigned long address, printk("Local APIC Write to read-only register\n"); break; } - return 1; } -int vlapic_range(struct vcpu *v, unsigned long addr) +static int vlapic_range(struct vcpu *v, unsigned long addr) { struct vlapic *vlapic = VLAPIC(v); @@ -773,6 +772,12 @@ int vlapic_range(struct vcpu *v, unsigned long addr) return 0; } +struct vmx_mmio_handler vlapic_mmio_handler = { + .check_handler = vlapic_range, + .read_handler = vlapic_read, + .write_handler = vlapic_write +}; + void vlapic_msr_set(struct vlapic *vlapic, uint64_t value) { /* When apic disabled */ diff --git a/xen/include/asm-x86/vmx_intercept.h b/xen/include/asm-x86/vmx_intercept.h index 8ae465c3da..d832ecf12c 100644 --- a/xen/include/asm-x86/vmx_intercept.h +++ b/xen/include/asm-x86/vmx_intercept.h @@ -18,10 +18,10 @@ typedef unsigned long (*vmx_mmio_read_t)(struct vcpu *v, unsigned long addr, unsigned long length); -typedef unsigned long (*vmx_mmio_write_t)(struct vcpu *v, - unsigned long addr, - unsigned long length, - unsigned long val); +typedef void (*vmx_mmio_write_t)(struct vcpu *v, + unsigned long addr, + unsigned long length, + unsigned long val); typedef int (*vmx_mmio_check_t)(struct vcpu *v, unsigned long addr); @@ -43,10 +43,6 @@ struct vmx_mmio_handler { vmx_mmio_write_t write_handler; }; -#define VMX_MMIO_HANDLER_NR 1 - -extern struct vmx_mmio_handler vmx_mmio_handers[VMX_MMIO_HANDLER_NR]; - /* global io interception point in HV */ extern int vmx_io_intercept(ioreq_t *p, int type); extern int register_io_handler(unsigned long addr, unsigned long size, diff --git a/xen/include/asm-x86/vmx_vlapic.h b/xen/include/asm-x86/vmx_vlapic.h index c8b4dde3a7..24a09e0096 100644 --- a/xen/include/asm-x86/vmx_vlapic.h +++ b/xen/include/asm-x86/vmx_vlapic.h @@ -225,14 +225,6 @@ extern int vlapic_init(struct vcpu *vc); extern void vlapic_msr_set(struct vlapic *vlapic, uint64_t value); -int vlapic_range(struct vcpu *v, unsigned long addr); - -unsigned long vlapic_write(struct vcpu *v, unsigned long address, - unsigned long len, unsigned long val); - -unsigned long vlapic_read(struct vcpu *v, unsigned long address, - unsigned long len); - int vlapic_accept_pic_intr(struct vcpu *v); struct vlapic* apic_round_robin(struct domain *d, -- 2.30.2